// ts推荐使用type。interface也可以用，就是看你怎么选择
interface Employee {}
type employee = {};

class Animal {
  // 私有属性name
  // private name: string;

  // 公共属性，都可以访问
  // public readonly name: string;

  // 保护属性，只有子类可以访问
  protected name: string;

  constructor(name: string) {
    this.name = name;
  }

  toString(): string {
    return `Name:${this.name}`;
  }
}

const animal = new Animal("something");
// animal.name; //这里你是访问不到name属性的,私有属性和保护属性都是访问不到的外部，只有自己或者子类可以访问

class Dog extends Animal {
  breed: string;

  constructor(name: string, breed: string) {
    super(name);
    this.breed = breed;
  }

  override toString(): string {
    // super 就是父类，直接调用父类toString方法
    return `${super.toString()} Breed: ${this.breed}`;
  }
}

const d1 = new Dog("jas", "1h");
console.log(d1.toString());
